package com.mastercard.assets.jpa;

import java.io.Serializable;
import javax.persistence.*;
import java.sql.Timestamp;
import java.util.List;


/**
 * The persistent class for the tbl_producto database table.
 * 
 */
@Entity
@Table(name="tbl_producto")
public class TblProducto implements Serializable {
	private static final long serialVersionUID = 1L;
	private int cveProducto;
	private String descripcion;
	private Timestamp fechaAlta;
	private String nombre;
	private byte status;
	private TblSegmento tblSegmento;
	private TblTipoProducto tblTipoProducto;
	private List<TblCampania> tblCampanias1;
	private List<TblCampania> tblCampanias2;
	private List<TblCampaniaProductoUsuario> tblCampaniaProductoUsuarios;
	private List<TblCampaniaProductoAdq> tblCampaniaProductoAdqs;
        private List<TblDomestic> tblDomestic;

    public TblProducto() {
    }


	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name="cve_producto", unique=true, nullable=false)
	public int getCveProducto() {
		return this.cveProducto;
	}

	public void setCveProducto(int cveProducto) {
		this.cveProducto = cveProducto;
	}


	@Column(nullable=false, length=2048)
	public String getDescripcion() {
		return this.descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}


	@Column(name="fecha_alta", nullable=false)
	public Timestamp getFechaAlta() {
		return this.fechaAlta;
	}

	public void setFechaAlta(Timestamp fechaAlta) {
		this.fechaAlta = fechaAlta;
	}


	@Column(nullable=false, length=255)
	public String getNombre() {
		return this.nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}


	@Column(nullable=false)
	public byte getStatus() {
		return this.status;
	}

	public void setStatus(byte status) {
		this.status = status;
	}


	//bi-directional many-to-one association to TblSegmento
    @ManyToOne
	@JoinColumn(name="cve_segmento", nullable=false)
	public TblSegmento getTblSegmento() {
		return this.tblSegmento;
	}

	public void setTblSegmento(TblSegmento tblSegmento) {
		this.tblSegmento = tblSegmento;
	}
	

	//bi-directional many-to-one association to TblTipoProducto
    @ManyToOne
	@JoinColumn(name="cve_tipo_producto", nullable=false)
	public TblTipoProducto getTblTipoProducto() {
		return this.tblTipoProducto;
	}

	public void setTblTipoProducto(TblTipoProducto tblTipoProducto) {
		this.tblTipoProducto = tblTipoProducto;
	}
	

	//bi-directional many-to-one association to TblCampania
	@OneToMany(mappedBy="tblProducto")
	public List<TblCampania> getTblCampanias1() {
		return this.tblCampanias1;
	}

	public void setTblCampanias1(List<TblCampania> tblCampanias1) {
		this.tblCampanias1 = tblCampanias1;
	}
	

	//bi-directional many-to-many association to TblCampania
    @ManyToMany
	@JoinTable(
		name="tbl_campania_producto"
		, joinColumns={
			@JoinColumn(name="cve_producto", nullable=false)
			}
		, inverseJoinColumns={
			@JoinColumn(name="cve_campania", nullable=false)
			}
		)
	public List<TblCampania> getTblCampanias2() {
		return this.tblCampanias2;
	}

	public void setTblCampanias2(List<TblCampania> tblCampanias2) {
		this.tblCampanias2 = tblCampanias2;
	}
	

	//bi-directional many-to-one association to TblCampaniaProductoUsuario
	@OneToMany(mappedBy="tblProducto")
	public List<TblCampaniaProductoUsuario> getTblCampaniaProductoUsuarios() {
		return this.tblCampaniaProductoUsuarios;
	}

	public void setTblCampaniaProductoUsuarios(List<TblCampaniaProductoUsuario> tblCampaniaProductoUsuarios) {
		this.tblCampaniaProductoUsuarios = tblCampaniaProductoUsuarios;
	}
	

	//bi-directional many-to-one association to TblCampaniaProductoAdq
	@OneToMany(mappedBy="tblProducto")
	public List<TblCampaniaProductoAdq> getTblCampaniaProductoAdqs() {
		return this.tblCampaniaProductoAdqs;
	}

	public void setTblCampaniaProductoAdqs(List<TblCampaniaProductoAdq> tblCampaniaProductoAdqs) {
		this.tblCampaniaProductoAdqs = tblCampaniaProductoAdqs;
	}
        
        //bi-directional many-to-one association to TblDomestic
	@OneToMany(mappedBy="tblProducto")
	public List<TblDomestic> getTblDomestic() {
		return this.tblDomestic;
	}

	public void setTblDomestic(List<TblDomestic> tblDomestic) {
		this.tblDomestic = tblDomestic;
	}
	
}